Use the right object when disconnecting from the GtkRecentManager::changed
authorEmmanuele Bassi <ebassi@gnome.org>
Sun, 31 Dec 2006 16:54:56 +0000 (16:54 +0000)
committerEmmanuele Bassi <ebassi@src.gnome.org>
Sun, 31 Dec 2006 16:54:56 +0000 (16:54 +0000)
2006-12-31  Emmanuele Bassi  <ebassi@gnome.org>

* gtk/gtkrecentchoosermenu.c (set_recent_manager): Use the
right object when disconnecting from the GtkRecentManager::changed
signal; save us a few indirections using a variable.

svn path=/trunk/; revision=16999

ChangeLog
gtk/gtkrecentchoosermenu.c

index 04ce75206a83dcc363da7bfa5a2fa2b6eaa02151..8a4de7cb44eca59fa3fa29d3ce5fd568c3db1baf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-12-31  Emmanuele Bassi  <ebassi@gnome.org>
+
+       * gtk/gtkrecentchoosermenu.c (set_recent_manager): Use the
+       right object when disconnecting from the GtkRecentManager::changed
+       signal; save us a few indirections using a variable.
+
 2006-12-31  Emmanuele Bassi  <ebassi@gnome.org>
 
        * gtk/gtkrecentchoosermenu.c: Move the signal and idle
index 12b9ca274e9e0c3954b49f22789ad79f0e36cb5b..893348e8f85f673e5a6cc1114b2dbf9879aa5fea 100644 (file)
@@ -264,7 +264,9 @@ gtk_recent_chooser_menu_dispose (GObject *object)
 
   if (priv->manager_changed_id)
     {
-      g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
+      if (priv->manager)
+        g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
+
       priv->manager_changed_id = 0;
     }
   
@@ -1157,21 +1159,25 @@ static void
 set_recent_manager (GtkRecentChooserMenu *menu,
                    GtkRecentManager     *manager)
 {
-  if (menu->priv->manager)
+  GtkRecentChooserMenuPrivate *priv = menu->priv;
+
+  if (priv->manager)
     {
-      g_signal_handler_disconnect (menu, menu->priv->manager_changed_id);
-      menu->priv->manager = NULL;
+      if (priv->manager_changed_id)
+        g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
+
+      priv->manager = NULL;
     }
   
   if (manager)
-    menu->priv->manager = manager;
+    priv->manager = manager;
   else
-    menu->priv->manager = gtk_recent_manager_get_default ();
+    priv->manager = gtk_recent_manager_get_default ();
   
-  if (menu->priv->manager)
-    menu->priv->manager_changed_id = g_signal_connect (menu->priv->manager, "changed",
-                                                      G_CALLBACK (manager_changed_cb),
-                                                      menu);
+  if (priv->manager)
+    priv->manager_changed_id = g_signal_connect (priv->manager, "changed",
+                                                 G_CALLBACK (manager_changed_cb),
+                                                 menu);
   /* (re)populate the menu */
   gtk_recent_chooser_menu_populate (menu);
 }